package com.yspa.yspa.controller;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.hsnn.medstgmini.Constants;
import com.hsnn.medstgmini.util.DateUtil;
import com.hsnn.medstgmini.util.Pagination;
import com.mobile.controller.MobileLoginController;
import com.yspa.manual.service.ChildManualManager;
import com.yspa.yspa.service.YspaInterfaceManager;

@Controller
@RequestMapping("/mobile/yspaInterface")
public class YspaInterfaceController {
	private static final Logger log = Logger.getLogger(YspaInterfaceController.class);
	
	@Autowired
	private HttpServletRequest request;
	
	@Autowired
	private HttpSession session;
	
	@Autowired
	private YspaInterfaceManager yspaInterfaceManager;
	
	@Autowired
	private ChildManualManager manager;
	
	/**
	 * 用户信息
	 * @author: qiulei
	 * @date: 2016年6月2日 下午3:59:29
	 * @return：
	 * @params：
	 */
	@RequestMapping("/getUserInfoList")
	@ResponseBody
	public Pagination getUserInfoList(){
		Pagination page = new Pagination(request);
		page.getConditions().put("userno", request.getParameter("userno"));
		page.getConditions().put("userid", request.getParameter("userid"));
		page.getConditions().put("name", request.getParameter("name"));
		page.getConditions().put("passwd", request.getParameter("passwd"));
		page = yspaInterfaceManager.getUserInfoList(page);
		List<Map<String, Object>> list = (List<Map<String, Object>>) page.getRows();
		if (null != list && list.size() > 0){
			page.setSuccess(true);
			request.getSession().setAttribute("userno", request.getParameter("userno"));
			yspaInterfaceManager.saveLoginUser(request.getParameter("userno"), request.getParameter("channelId"));
		} else {
			page.setSuccess(false);
			page.setMsg("用户名或密码错误！");
		}
		return page;
	}
	/**
	 * 活动公告
	 * @author: qiulei
	 * @date: 2016年6月2日 下午3:59:46
	 * @return：
	 * @params：
	 */
	@RequestMapping("/getHactivityList")
	@ResponseBody
	public Pagination getHactivityList(){
		Pagination page = new Pagination(request);
		page.getConditions().put("acttitle", request.getParameter("acttitle"));
		page.getConditions().put("name", request.getParameter("name"));
		return yspaInterfaceManager.getHactivityList(page);
	}
	
	/**
	 * 预约行程
	 * @author: qiulei
	 * @date: 2016年6月2日 下午4:04:08
	 * @return：
	 * @params：
	 */
	@RequestMapping("/getHPProEventList")
	@ResponseBody
	public Pagination getHPProEventList(){
		Pagination page = new Pagination(request);
		Map<String,Object> userMap = (Map<String, Object>) session.getAttribute(Constants.USERINFO);
		if (userMap == null) {
			return null;
		}
		
		// 测量规划
		Map<String,String> query = new HashMap<String,String>();
		page.getConditions().put("userno", userMap.get("userno").toString());
		String strTime = DateUtil.format(DateUtil.getTimeStamp(-30), "yyyy-MM-dd hh:mm:ss");
		String endTime = DateUtil.format(DateUtil.getTimeStamp(), "yyyy-MM-dd hh:mm:ss");
		page.getConditions().put("strTime", strTime);
		page.getConditions().put("endTime", endTime);
		page.getConditions().put("event_subject", request.getParameter("event_subject"));
		page.getConditions().put("event_place", request.getParameter("event_place"));
		return yspaInterfaceManager.getHPProEventList(page);
	}
	
	/**
	 * 健康排程（测量规划，饮食规划，运动规划）
	 * @return
	 */
	@RequestMapping("/getHealthScheduleList")
	@ResponseBody
	public Map<String,Object> getHealthScheduleList(){
		Map<String,Object> userMap = (Map<String, Object>) session.getAttribute(Constants.USERINFO);
		if (userMap == null) {
			return null;
		}
		
		// 测量规划
		Map<String,String> query = new HashMap<String,String>();
		query.put("userno", userMap.get("userno").toString());
		String strTime = DateUtil.format(DateUtil.getTimeStamp(), "yyyy-MM-dd" + " 00:00:00");
		String endTime = DateUtil.format(DateUtil.getTimeStamp(), "yyyy-MM-dd" + " 23:59:59");
		query.put("strTime", strTime);
		query.put("endTime", endTime);
		List<Map<String,Object>> managerList = yspaInterfaceManager.getMeasempList(query);
		// 测量项
		List<Map<String,Object>> hpMeasureItemsList = yspaInterfaceManager.getHPMeasureItemsList(null);
		Map<String,String> hpMeasureItem = new HashMap<String,String>();
		for(Map<String,Object> hpMeasureItems : hpMeasureItemsList){
			hpMeasureItem.put((String)hpMeasureItems.get("measure_id"), (String)hpMeasureItems.get("measure_name"));
		}
		
		for(Map<String,Object> manager  : managerList){
			manager.put("measure_name", hpMeasureItem.get((String)manager.get("measure_id")));
		}
		
		// 饮食规划
		List<Map<String,Object>> foodempList = yspaInterfaceManager.getFoodempList(query);
		
		// 运动规划
		List<Map<String,Object>> exerempList = yspaInterfaceManager.getExerempList(query);
		
		Map<String,Object> resMap = new HashMap<String,Object>();
		resMap.put("managerList", managerList);
		resMap.put("foodempList", foodempList);
		resMap.put("exerempList", exerempList);
		return resMap;
	}
	
	/**
	 * 用药提醒
	 * @author: qiulei
	 * @date: 2016年6月2日 下午4:05:46
	 * @return：
	 * @params：
	 */
	@RequestMapping("/getHPMedicineSugList")
	@ResponseBody
	public Pagination getHPMedicineSugList(){
		Map<String,Object> userMap = (Map<String, Object>) session.getAttribute(Constants.USERINFO);
		if (userMap == null) {
			return null;
		}
		
		Pagination page = new Pagination(request);
		page.getConditions().put("medicine_name", request.getParameter("medicine_name"));
		page.getConditions().put("medicine_item", request.getParameter("medicine_item"));
		page.getConditions().put("medicine_mode", request.getParameter("medicine_mode"));
		page.getConditions().put("userno", userMap.get("userno").toString());
		String strTime = DateUtil.format(DateUtil.getTimeStamp(-30), "yyyy-MM-dd hh:mm:ss");
		String endTime = DateUtil.format(DateUtil.getTimeStamp(), "yyyy-MM-dd hh:mm:ss");
		page.getConditions().put("strTime", strTime);
		page.getConditions().put("endTime", endTime);
		return yspaInterfaceManager.getHPMedicineSugList(page);
	}
	/**
	 * 健康叮咛
	 * @author: qiulei
	 * @date: 2016年6月2日 下午4:05:59
	 * @return：
	 * @params：
	 */
	@RequestMapping("/getCalendarlogList")
	@ResponseBody
	public Pagination getCalendarlogList(){
		Map<String,Object> userMap = (Map<String, Object>) session.getAttribute(Constants.USERINFO);
		if (userMap == null) {
			return null;
		}
		
		Pagination page = new Pagination(request);
		page.getConditions().put("digest", request.getParameter("digest"));
		page.getConditions().put("descr", request.getParameter("descr"));
		page.getConditions().put("userno", userMap.get("userno").toString());
		String strTime = DateUtil.format(DateUtil.getTimeStamp(-30), "yyyy-MM-dd hh:mm:ss");
		String endTime = DateUtil.format(DateUtil.getTimeStamp(), "yyyy-MM-dd hh:mm:ss");
		page.getConditions().put("strTime", strTime);
		page.getConditions().put("endTime", endTime);
		return yspaInterfaceManager.getCalendarlogList(page);
	}
	/**
	 * 血压、血糖、血脂查询
	 * @author: qiulei
	 * @date: 2016年6月2日 下午4:11:38
	 * @return：
	 * @params：measure_id：M01血压，M02饭前血糖，M03体重，M04体温，M05腰围，M06体脂，M07身高，M08饭后血糖，
	 */
	@RequestMapping("/getMeasempList")
	@ResponseBody
	public List<Map<String,Object>> getMeasempList(){
		Map<String,Object> userMap = (Map<String, Object>) session.getAttribute(Constants.USERINFO);
		if (userMap == null) {
			return null;
		}
		
		Map<String,String> query = new HashMap<String,String>();
		String queryTime = request.getParameter("queryTime");
		query.put("userno", userMap.get("userno").toString());
		String strTime = DateUtil.format(DateUtil.getTimeStamp(Integer.parseInt(queryTime)), "yyyy-MM-dd" + " 00:00:00");
		String endTime = DateUtil.format(DateUtil.getTimeStamp(), "yyyy-MM-dd" + " 23:59:59");
		query.put("strTime", strTime);
		query.put("endTime", endTime);
		query.put("measure_id", request.getParameter("measure_id"));
		List<Map<String,Object>> managerList = yspaInterfaceManager.getMeasempList(query);
		
		return managerList;
	}
	/**
	 * 知识家
	 * @author: qiulei
	 * @date: 2016年6月2日 下午4:15:42
	 * @return：
	 * @params：
	 */
	@RequestMapping("/getHPKnowledgeList")
	@ResponseBody
	public Pagination getHPKnowledgeList(){
		Pagination page = new Pagination(request);
		page.getConditions().put("title", request.getParameter("title"));
		page.getConditions().put("type", request.getParameter("type"));
		return yspaInterfaceManager.getHPKnowledgeList(page);
	}
	/**
	 * 食物卡路里
	 * @author: qiulei
	 * @date: 2016年6月2日 下午4:16:08
	 * @return：
	 * @params：
	 */
	@RequestMapping("/getFoodcalorList")
	@ResponseBody
	public Pagination getFoodcalorList(){
		Pagination page = new Pagination(request);
		page.getConditions().put("descr", request.getParameter("descr"));
		page.getConditions().put("classcd", request.getParameter("classcd"));
		return yspaInterfaceManager.getFoodcalorList(page);
	}
	
	@RequestMapping("/getFoodclassList")
	@ResponseBody
	public Pagination getFoodclassList(){
		Pagination page = new Pagination(request);
		page.getConditions().put("descr", request.getParameter("descr"));
		return yspaInterfaceManager.getFoodclassList(page);
	}
	
	/**
	 * 饮食规则
	 * @author: qiulei
	 * @date: 2016年6月4日 下午12:13:19
	 * @return：
	 * @params：
	 */
	@RequestMapping("/getFoodempList")
	@ResponseBody
	public Pagination getFoodempList(){
		Pagination page = new Pagination(request);
		page.getConditions().put("descr", request.getParameter("descr"));
		page.getConditions().put("userno", request.getParameter("userno"));
		page.getConditions().put("datadate", request.getParameter("datadate"));
		return yspaInterfaceManager.getFoodempList(page);
	}
	/**
	 * 运动规则
	 * @author: qiulei
	 * @date: 2016年6月4日 下午12:13:30
	 * @return：
	 * @params：
	 */
	@RequestMapping("/getExerempList")
	@ResponseBody
	public Pagination getExerempList(){
		Pagination page = new Pagination(request);
		page.getConditions().put("descr", request.getParameter("descr"));
		page.getConditions().put("userno", request.getParameter("userno"));
		page.getConditions().put("datadate", request.getParameter("datadate"));
		return yspaInterfaceManager.getExerempList(page);
	}
	
	@RequestMapping("/getEmpimeiList")
	@ResponseBody
	public Pagination getEmpimeiList(){
		Pagination page = new Pagination(request);
		page.getConditions().put("items", request.getParameter("items"));
		page.getConditions().put("name", request.getParameter("name"));
		return yspaInterfaceManager.getEmpimeiList(page);
	}
	
	
/////////////////////////////////////////////////////////////////////////////////////////////////////////	
	/**
	 * 根据userno获取用户信息
	 * @author: qiulei
	 * @date: 2016年6月4日 上午11:20:55
	 * @return：
	 * @params：
	 */
	@RequestMapping("/getUserInfo")
	@ResponseBody
	public Map<String, Object> getUserInfo(Long userno){
		return yspaInterfaceManager.getUserInfo(userno);
	}
	/**
	 * 修改用户信息
	 * @author: qiulei
	 * @date: 2016年6月4日 下午12:13:50
	 * @return：
	 * @params：
	 */
	@RequestMapping("/updateUserInfo")
	@ResponseBody
	public Pagination updateUserInfo(){
		Pagination page = new Pagination();
		page.getConditions().put("userno", request.getParameter("userno"));//用户号
		page.getConditions().put("duedate", request.getParameter("duedate"));//到期日期
		page.getConditions().put("height", request.getParameter("height"));//身高
		page.getConditions().put("weight", request.getParameter("weight"));//体重
		page.getConditions().put("ContactName", request.getParameter("ContactName"));//紧急联系人姓名
		page.getConditions().put("ContactRelationship", request.getParameter("ContactRelationship"));//关系
		page.getConditions().put("ContactMobile", request.getParameter("ContactMobile"));//电话
		try {
			yspaInterfaceManager.updateUserInfo(page);
			page.setSuccess(true);
		} catch (Exception e) {
			e.printStackTrace();
			page.setSuccess(false);
		}
		return page;
	}
	/**
	 * 用户注册
	 * @author: qiulei
	 * @date: 2016年6月4日 下午1:12:47
	 * @return：
	 * @params：
	 */
	@RequestMapping("/regditUserInfo")
	@ResponseBody
	public Pagination regditUserInfo(){
		Pagination page = new Pagination();
		page.getConditions().put("userid", request.getParameter("userid"));
		page.getConditions().put("name", request.getParameter("name"));
		page.getConditions().put("nickname", request.getParameter("nickname"));
		page.getConditions().put("birthdate", request.getParameter("birthdate"));
		page.getConditions().put("sex", request.getParameter("sex"));
		page.getConditions().put("cellphone", request.getParameter("cellphone"));
		page.getConditions().put("email", request.getParameter("email"));
		page.getConditions().put("password", request.getParameter("password"));
		try {
			Map<String, String> userMap = new HashMap<String, String>();
			userMap.put("userid", request.getParameter("userid"));
			Map<String,Object> retMap = yspaInterfaceManager.getUserInfo2(userMap);
			if(retMap != null){
				log.warn("账号已存在" + request.getParameter("userid"));
				page.setMsg("账号已存在！");
				page.setSuccess(false);
				return page;
			}
			yspaInterfaceManager.regditUserInfo(page);
			page.setSuccess(true);
		} catch (Exception e) {
			e.printStackTrace();
			page.setSuccess(false);
		}
		return page;
	}
	/**
	 * 根据rowid获取IMEI信息
	 * @author: qiulei
	 * @date: 2016年6月4日 下午12:20:32
	 * @return：
	 * @params：
	 */
	@RequestMapping("/getEmpimeiInfo")
	@ResponseBody
	public Map<String, Object> getEmpimeiInfo(Long rowid){
		return yspaInterfaceManager.getEmpimeiInfo(rowid);
	}
	/**
	 * 修改iMei信息
	 * @author: qiulei
	 * @date: 2016年6月4日 下午12:31:14
	 * @return：
	 * @params：
	 */
	@RequestMapping("/updateEmpimeiInfo")
	@ResponseBody
	public Pagination updateEmpimeiInfo(){
		Pagination page = new Pagination();
		page.getConditions().put("name", request.getParameter("name"));
		page.getConditions().put("imei", request.getParameter("imei"));
		page.getConditions().put("rowid", request.getParameter("rowid"));
		try {
			yspaInterfaceManager.updateEmpimeiInfo(page);
			page.setSuccess(true);
		} catch (Exception e) {
			e.printStackTrace();
			page.setSuccess(false);
		}
		return page;
	}
	/**
	 * 修改密码
	 * @author: qiulei
	 * @date: 2016年6月4日 下午12:37:09
	 * @return：
	 * @params：
	 */
	@RequestMapping("/updatePasswd")
	@ResponseBody
	public Pagination updatePasswd(String userno, String passwd){
		Pagination page = new Pagination();
		try {
			yspaInterfaceManager.updatePasswd(userno, passwd);
			page.setSuccess(true);
		} catch (Exception e) {
			e.printStackTrace();
			page.setSuccess(false);
		}
		return page;
	}
	
	@RequestMapping("/getBugroupInfo")
	@ResponseBody
	public Map<String, Object> getBugroupInfo(Long rowid){
		return yspaInterfaceManager.getBugroupInfo(rowid);
	}
	@RequestMapping("/getEmpgroupInfo")
	@ResponseBody
	public Map<String, Object> getEmpgroupInfo(Integer userno, String groupcd){
		return yspaInterfaceManager.getEmpgroupInfo(userno, groupcd);
	}
	@RequestMapping("/getDeptInfo")
	@ResponseBody
	public Map<String, Object> getDeptInfo(Long rowid){
		return yspaInterfaceManager.getDeptInfo(rowid);
	}
	/**
	 * 获取血糖、血压、血脂信息
	 * @author: qiulei
	 * @date: 2016年6月4日 下午1:53:15
	 * @return：
	 * @params：
	 */
	@RequestMapping("/getMeasempInfo")
	@ResponseBody
	public Map<String, Object> getMeasempInfo(Long rowid, String measure_id){
		return yspaInterfaceManager.getMeasempInfo(rowid, measure_id);
	}
	/**
	 * 获取单条饮食规则
	 * @author: qiulei
	 * @date: 2016年6月4日 下午1:55:32
	 * @return：
	 * @params：
	 */
	@RequestMapping("/getFoodempInfo")
	@ResponseBody
	public Map<String, Object> getFoodempInfo(Long rowid){
		return yspaInterfaceManager.getFoodempInfo(rowid);
	}
	/**
	 * 获取单条运动规则信息
	 * @author: qiulei
	 * @date: 2016年6月4日 下午1:55:15
	 * @return：
	 * @params：
	 */
	@RequestMapping("/getExerempInfo")
	@ResponseBody
	public Map<String, Object> getExerempInfo(Long rowid){
		return yspaInterfaceManager.getExerempInfo(rowid);
	}
	/**
	 * 获取单条公告信息
	 * @author: qiulei
	 * @date: 2016年6月4日 下午1:54:59
	 * @return：
	 * @params：
	 */
	@RequestMapping("/getHactivityInfo")
	@ResponseBody
	public Map<String, Object> getHactivityInfo(Long rowid){
		return yspaInterfaceManager.getHactivityInfo(rowid);
	}
	/**
	 * 获取单条预约行程信息
	 * @author: qiulei
	 * @date: 2016年6月4日 下午1:54:42
	 * @return：
	 * @params：
	 */
	@RequestMapping("/getHPProEventInfo")
	@ResponseBody
	public Map<String, Object> getHPProEventInfo(Integer event_uid){
		return yspaInterfaceManager.getHPProEventInfo(event_uid);
	}
	/**
	 * 获取单条用药提醒信息
	 * @author: qiulei
	 * @date: 2016年6月4日 下午1:54:27
	 * @return：
	 * @params：
	 */
	@RequestMapping("/getHPMedicineSugInfo")
	@ResponseBody
	public Map<String, Object> getHPMedicineSugInfo(Long rowid){
		return yspaInterfaceManager.getHPMedicineSugInfo(rowid);
	}
	/**
	 * 获取单条健康叮咛信息
	 * @author: qiulei
	 * @date: 2016年6月4日 下午1:54:06
	 * @return：
	 * @params：
	 */
	@RequestMapping("/getCalendarlogInfo")
	@ResponseBody
	public Map<String, Object> getCalendarlogInfo(Integer rowid){
		return yspaInterfaceManager.getCalendarlogInfo(rowid);
	}
	
	@RequestMapping("/getHPMeasureItemsInfo")
	@ResponseBody
	public Map<String, Object> getHPMeasureItemsInfo(String measure_id){
		return yspaInterfaceManager.getHPMeasureItemsInfo(measure_id);
	}
	/**
	 * 获取单条知识家信息
	 * @author: qiulei
	 * @date: 2016年6月4日 下午1:50:36
	 * @return：
	 * @params：
	 */
	@RequestMapping("/getHPKnowledgeInfo")
	@ResponseBody
	public Map<String, Object> getHPKnowledgeInfo(Integer rowid, Long pro_userno){
		return yspaInterfaceManager.getHPKnowledgeInfo(rowid, pro_userno);
	}
	/**
	 * 根据ID获取食物卡路里
	 * @author: qiulei
	 * @date: 2016年6月4日 下午1:50:19
	 * @return：
	 * @params：
	 */
	@RequestMapping("/getFoodcalorInfo")
	@ResponseBody
	public Map<String, Object> getFoodcalorInfo(Long rowid){
		return yspaInterfaceManager.getFoodcalorInfo(rowid);
	}
	
	/**
	 * 获取儿童健康手册列表数据
	 * @return
	 */
	@RequestMapping("/getChildManualList")
	@ResponseBody
	public Pagination getChildManualList(){
		Pagination page = new Pagination(request);
		page.getConditions().put("mtype", request.getParameter("mtype"));
		page = manager.getChildManualList(page);
		return page;
	}
	
	/**
	 * 获取儿童健康手册详情数据
	 * @param rowid
	 * @return
	 */
	@RequestMapping("/getChildManualInfo")
	@ResponseBody
	public Map<String, Object> getChildManualInfo(Long rowid){
		String id = request.getParameter("id");
		return manager.getEditInfo(id);
	}
}
